import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import java.awt.Font;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComponent;
import java.awt.Dimension;
//继承JFrame 为了直接复用swing框架中的窗口管理能力
//为了子类可以直接调用JFrame public 方法
//ActionListener 是java事件处理机制的核心部分


public class Calculator extends JFrame implements ActionListener{
    //声明界面属性
    //上下两个容器面板 文本框区域 按钮
    private JPanel north,center;
    //文本框 显示计算过程或者结果或者日期时间
    private JTextField field;
    //按钮
    private JButton[] btns;
    //初始化窗口 -构造器 构造方法
    private String firstNumber = "";
    //用于存储输入的第一个数字。
    private String operation = "";
    //用于存储用户选择的操作（例如加法、减法等运算符号）
    private boolean startNewNumber = true;
    //控制输入行为


    private void initComponent(){
        north=new JPanel();
        center=new JPanel();
        field=new JTextField();
        field.setPreferredSize(new Dimension(700,150));
        field.setEditable(false);
        field.setFont(new Font("SanSerif",Font.BOLD,35));
        //按钮文本内容
        //Jbutton[] btns
      
        String[] str= new String[]{
            "AC","B","S","÷",
            "7","8","9","×",
            "4","5","6","-",
            "1","2","3","+",
            "00","0",".","="

        };
        //按钮数组
        btns=new JButton[str.length];
        for(int i=0;i<btns.length;i++){
            btns[i]=new JButton(str[i]);
            btns[i].setFont(new Font("SanSerif",Font.BOLD,25));
        }

        //north 顶部面板 使用 BorderLayout 边界布局
        north.setLayout(new BorderLayout());
        center.setLayout(new GridLayout(5,4,5,5));
        //field 文本框 添加到 north 顶部面板 使用 BorderLayout 居中
        north.add(field,BorderLayout.CENTER);
        //btns 按钮 添加到 center 面板 增强for
        for(JButton btn:btns){
            center.add(btn);
        }
        //将north顶部面板添加到窗口中
        add(north,BorderLayout.NORTH);
        //将center顶部面板添加到窗口中
        add(center);
         //绑定按钮监听事件
        for(JButton btn:btns){
            btn.addActionListener(this);
         }
    }
    




    private void setBtnText(String text){
        switch (text){

            case "C":
                System.out.println("");
                break;
            case "B"://Backspace(退格)
                System.out.println("B");
                break;
            case "T"://Total(总和)
                System.out.println("未知的地点以后在探索吧");
                break;
            case "S"://Square(平方)
                System.out.println("S");
                break;
            case "=":
                System.out.println("=");
                break;
               
        }
        System.out.println("setBtnText:"+text);
        String oldText=field.getText();
        field.setText(oldText+text);
    }





    public Calculator(){
        setTitle("计算器");
        setSize(700,700);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        //设置窗口居中显示
        setLocationRelativeTo(null);
        //初始化界面组件
        initComponent();
        //设置窗口显示
        setVisible(true);
    }
    

    //实现接口中都抽象方法 处理事件
    @Override
    public void actionPerformed(ActionEvent a){
            //此处可以捕捉到ActionListener监听的事件
            System.out.println(a.getSource());
            Object source=a.getSource();
            if(source instanceof JButton){
                JButton btn= (JButton)source;
                String text= btn.getText();
                //处理对应按键文字
                setBtnText(text);

                //System.out.println(text);
            }
    }
     public static void main(String[] args){
    
        //new Calculator();
        SwingUtilities.invokeLater(Calculator::new);
}
}